メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生

DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生

SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
drupal
Facebook
bug
module usage

コンテンツ作成/更新時にFacebookへの自動投稿が機能しなくなりました

  • 使用しているモジュール:Drupal for Facebook
    • Facebook API
    • Facebook Apps
    • FB Streams
  • 以前コンテンツ(例:Article)作成/更新時にFacebookへの投稿が正常に作動していました。
  • システム/モジュール更新(具体的なモジュール名は不明)後に、ある日Facebookへの投稿ができなくなりました。
  • コンテンツ作成時に、投稿できないエラーメッセージはありません
  • レポート(ホーム » 管理 » レポート » 最近のログメッセージ)のところにエラーが表示されています
    Failed to post content to Facebook.: fb_graph failed querying 123188400xxxxxxx/feed. OAuthException: Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.
    

原因:不明です(おそらく、システム/モジュールのアップデートのせい)

  • 具体的に原因は見当たらないです。
  • Facebookのアクセストークンが3か月一回更新する必要があって、更新してから、しばらく見っていない状態でした。
  • 気が付いたら、コンテンツ作成/更新時にFacebookへの投稿はできなくなりました。

解決:Drupal for Facebookのサブモジュールを再インストール

  • 問題のところからデバッグしながら、問題の究明が可能と思いますが、時間がかかるから、まず再モジュールをアンインストールしてから、再インストールしました。
  • 再度FacebookのAppIDとSecretKeyを入力したら、自動投稿機能が回復されました
drupal
Facebook
customization
development
bug

モジュール(Drupal for Facebook)の管理画面がエラー発生:otice: Undefined index: link in fb_stream_requirements() 

  • モジュール:Drupal for Facebook7.x-3.4 、最終更新日:2013/10/26、メンテナンスメンバーが募集中
  • モジュールの管理画面上に以下のエラーが発生しています
    Notice: Undefined index: link in fb_stream_requirements() (line 24 of /virtual/drills/public_html/drupal7/sites/all/modules/fb/fb_stream.install). =>
    

エラー原因調査:Facebook APIでアカウント情報取得時に「link」パラメータが不足

  • エラー発生しているところ:sites/all/modules/fb/fb_stream.installの24行目にある「 $from['link']」のところから出ました
  • 変数$formは関数「fb_graph」(sites/all/modules/fb/fb.moduleの578行あたり)より、FacebookAPIを利用して、アクセストークンよりユーザー情報を取得します
  • アクセストークンよりFacebookアカウント情報取得$urlを出力して観察しました。
  • 同じuriでブラウザからFacebookのアカウント情報を取得してみたら「name」と「id」しか取れないです。
  • Facebookの仕様より、「link」パラメータを取得するにはuriのパラメータに「field=id,name,link」をつける必要はあります(初期値:name,idだけ)
  • すると、sites/all/modules/fb/fb_stream.installで$from取得ロジックに「field=id,name,link」パラメータを追加する必要はあります
  • 結果として、上記パラメータ追加よりエラーが発生しなくなります

モジュール(Drupal for Facebook)が長い間更新されていないため、エラーがでやすい状態なので、注意する必要があります

  • Drupal for Facebookモジュールが機能豊富で、使用価値があります
  • 長い間に修正されていない(最終更新:2013/10/26)、Facebookの仕様変更点に対応できないと思います。
  • モジュールメンテナンスメンバーも募集中なので、修正する人もいない状態です。
  • これらを考えて、利用する時に注意が必要です
SEO
drupal
Facebook
SEO
bug
configuration

やりたいこと:Drupalでコンテンツ作成時に自動的にFacebookに投稿したいです

  • Drupalのバージョン:7.54
  • Facebookへの投稿モジュール:Drupal for Facebook:7.x-3.4
  • Drupal for Facebookモジュールをインストールし、有効化にします
  • Drupal for Facebookの設定画面(ホーム » 管理 » サイト構築 » Facebook Apps):
    • ADD APPタブで投稿したいのFacebookアカウントのFacebook App IDとSecretを設定し、保存します(Facebook App IDとSecret取得方法は色ろなところで記述され、ここでは省略します)
    • STREAM POSTタブで「Access Token Generator」セクションの下にあるリンク(post via the [アカウント名] application)をクリックしてFacebookへのアクセス許可をもらいます

問題点:Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生

  • Facebookへのアクセス許可権限取得際に「publish_stream」が無効なスコープエラーが発生が発生しました
    • Invalid Scopes: publish_stream. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions

 

解決:Facebookがアクセス仕様変更より「publish_stream」権限が廃止したため、代わりに「publish_actions」,「publish_pages」の使用

  • モジュール(Drupal for Facebook)最後のメンテナンス日付を見てみると、最後変更日は2013年となっています
  • その後、Facebookがアクセス管理仕様変更をし、「publish_stream」権限を廃止しました
  • モジュール(Drupal for Facebook)のソースコードを読んでみました、以下の部分を変更すれば、問題解決となります
    • fbパッケージにfb_stream_admin.incの173行目にある権限取得設定:'scope' => 'publish_stream,manage_pages',
    • このスコープを:'scope' => 'publish_actions,publish_pages,manage_pages',に変更すれば良いです

 

 

 

 

 

drupal
development
bug

Drupalのモジュール(Drupal for Facebook)の更新がなくてエラーが続出しています

  • 背景:Drupal7.56、Drupal for Facebook7.x-3.4
  • DrupalとFacebookとの連携によく使用しているモジュール(Drupal for Facebook)があります
  • だが、モジュールのリリースでは2013/10月以降に更新されていないし、質問への返答もないようです
    • このプロジェクトが死んでいるようです
  • 使用してからいくつかのエラーを経験してきて、自力で解決をしました
    • DrupalでのFacebookのWallに自動投稿設定時に「publish_stream」が無効なスコープエラーが発生
    • Drupalのモジュール(Drupal for Facebook)の管理画面にエラー(otice: Undefined index: link in fb_stream_requirements() )
  • 最近はDrupalでのコンテンツ更新して、Facebookへの投稿はできなくなった現象がありまして、Facebookの管理画面(ホーム » 管理 » サイト構築 » Drupal for Facebook » STREAM POSTS)で新しいアクセストークンを更新(有効期限は最大でも90日のため、3か月一度更新が必要)するとき、画面が真っ白で動かなくなりました
    • システムログを見てたが、なにも記録されていない
    • 最悪なエラー発生状態:真っ白な画面、どこで、何か発生したは、まったくわからない状態でした
    • デバッグしながらで、問題を探すしかありませんでした

今回の問題:Facebookからの返還されたアクセストークンのフォーマットがJSONに変わったためアクセストークン取得エラー

  • FacebookのOauth Access Token v2.3以降にTokenをJSONフォーマットで返還するように変わりました
    • v2.3以前はURLのパラメーターのような文字列(例:&access_token=jeiqwpxxxxxx&type=yyyyy)として返還
  • おそらく、以前Facebookのプロジェクト管理で設定したOauth Access Tokenのバージョンを強制的にアップしたと思います
    • 以前設定したバージョンが覚えていない
    • 現在はv2.9になっています
  • モジュール(Drupal for Facebook)がfacebook_php_sdk3.2.2を使用しているので、JSONのアクセストークン取得を対応していないです
    Oauth Access Token V2.3以上になるとJSONのデータ扱う必要がある

修正:モジュール(Drupal for Facebook)とfacebook_php_sdkに複数のaccess_token取得ロジックの修正

  • \sites\all\modules\fb\fb_stream.admin.inc の265行あたりのaccess_token取得ロジックを修正
    // オリジナルコード
    parse_str($http->data, $data);
    return $data['access_token'];
    
    // 以下のコードで修正
    $data = json_decode($http->data);
    if ( isset( $token_obj->access_token ) ) {
      return $data->access_token ;
    } else {
      return false;
    }
    
  • \sites\all\modules\fb\fb_module の691行あたりに、上記のコードで修正
  • \sites\all\libraries\facebook-php-sdk\src\base_facebook.php の415行あたりに、上記のコードで修正
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)